from urllib import urlencode
import json

from django.shortcuts import render_to_response

import facebook

def home(request):
    tile_urls = []
    for i in xrange(1, 9):
        tile_urls.append("hierodaaro/img/foto/foto_" + str(i) + ".jpg")

    context = {
        'neighborhood': "Rotterdam Zuid",
        'neighborhood_description': """
            Rotterdam Zuid omvat het gedeelte van Rotterdam,
            dat ten zuiden van de Nieuwe Maas ligt (de linker
            Maasoever), op het eiland Ijsselmonde. Rotterdam Zuid
            telt 200.000 inwoners.

            Van oudsher werd dit stadsdeel gezien als toch wat apart,
            doordat de rivier dit gedeelte scheidde van de rest van...?
        """,
        'tile_urls': tile_urls,
    }

    return render_to_response('home.html', context)

def aboutus(request):
    context = {
        'about_us_text': """
        <h3>Hierodaaro</h3>
        <p>Hierodaaro&copy; is een online buurtplatform met offline karaktereigenschappen. Je kunt bij ons oprechte informatie vinden over alle buurten in Nederland. We maken een selectie op basis van jouw persoonlijke interesses, hierdoor kunnen we jou adviseren bij het vinden van een buurt die echt bij jou past. We hebben verschillende buurtambassadeurs die jou hier bij kunnen helpen. De website staat op dit moment nog aan het begin van zijn ontwikkeling. Dat betekent dat Hierodaaro&copy; nog flink aan het groeien is, daarom kun je op dit moment alleen nog informatie vinden over buurten in Rotterdam. We nodigen je uit om lid te worden van onze community en ons mee te helpen Hierodaaro&copy; te laten groeien!</p>
        
        <p>Hierodaaro&copy; is geboren op 26 Maart 2013.</p>

        <p>Wij geloven dat mensen overal in Nederland hun ervaringen willen delen met vreemden (of zoals wij ze noemen "vrienden die je nog moet leren kennen"). 
        Wij geloven dat Hierodaaro&copy; deze kennismaking ondersteund.
        Dit is het begin...
        </p>

        <h3>Missie</h3>
        <p>Hierodaaro&copy; brengt de bezoeker andere inzichten door het persoonlijk adviseren van een buurt. Wij verrassen onze bezoekers met buurtadvies waardoor wij de bezoeker buiten hun referentiekader laten kijken. Wij bieden de bezoeker een oprecht beeld van de buurt.</p>

        <h3>Visie</h3>
        <p>Hierodaaro&copy; streeft naar een succesvol, open en vrij buurtplatform waarop mensen met plezier informatie delen over hun buurt en waarop mensen op een leuke manier content met elkaar willen delen en elkaar helpen bij het vinden van een passende buurt. Wij streven ernaar om iedere huizenbezoeker aan te spreken. Hierodaaro&copy; moet de eerste stap zijn bij het vinden van een buurt, hierna brengen we de bezoeker in contact met huizenwebsite Funda&copy;</p>
        """
    }
    return render_to_response('aboutus.html', context)

from django_facebook.auth import FacebookProfileBackend
from django.http import HttpResponse
from django.shortcuts import redirect
#from django.contrib import messages

from urllib2 import urlopen, HTTPError

APP_ID = "466214836795356"
APP_SECRET = "3145b076826f8a57c0c8d21595c500e2"
REDIRECT_URI = "http://localhost:8000/signup"
FB_URL = "https://www.facebook.com/dialog/oauth?client_id=" + APP_ID + "&redirect_uri=" + REDIRECT_URI
FB_AUTH_URL = "https://graph.facebook.com/oauth/access_token?client_id=" + APP_ID + \
    "&redirect_uri=" + REDIRECT_URI + \
    "&client_secret=" + APP_SECRET
FB_TOKEN_URL = "https://graph.facebook.com/debug_token?access_token=" + APP_SECRET

def signup(request):
    if "code" in request.GET:
        code = request.GET['code']
        # Now authenticate the user against our FB app (?)
        # and parse the response
        try:
            resp = urlopen(FB_AUTH_URL + "&code=" + code).read()
            access_token = _get_access_token(resp)

            # Now acquire fb_uid
            graph = facebook.GraphAPI(access_token)
            fb_uid = graph.get_object("me")['id']

            # Now save some data to our own backend
            f = FacebookProfileBackend()
            f.authenticate(fb_uid, access_token)
        except HTTPError, IOError:
            pass
            #error = "Inloggen mislukt. Probeer het later nog eens"

        # FIXME Send user back to page where it clicked the login button
        # For now: direct to homepage
        redirect_req = redirect('home')
        #if error:
            # For some reason the messages middleware does not work yet
            #messages.info(redirect_req, error)

        return redirect_req
    else:
        return redirect(FB_URL)

def _get_access_token(resp):
    # resp = 'access_token=foo&expires=bar
    # Split on &, take access_token, then split on = and take value
    access_token = resp.split("&")[0].split("=")[1]
    return access_token
